package com.zzy.usefultool;

import org.junit.Test;

import com.google.common.base.CharMatcher;

public class CharMatcherTest {

//	CharMatcher本身提供了很多CharMatcher实现类,如下: 
//		ANY: 匹配任何字符
//		ASCII: 匹配是否是ASCII字符
//		BREAKING_WHITESPACE: 匹配所有可换行的空白字符(不包括非换行空白字符,例如"\u00a0")
	
//		DIGIT: 匹配ASCII数字 
	
//		INVISIBLE: 匹配所有看不见的字符
//		JAVA_DIGIT: 匹配UNICODE数字, 使用 Character.isDigit() 实现
//		JAVA_ISO_CONTROL: 匹配ISO控制字符, 使用 Charater.isISOControl() 实现
	
//		JAVA_LETTER: 匹配字母, 使用 Charater.isLetter() 实现
//		JAVA_LETTER_OR_DIGET: 匹配数字或字母
//		JAVA_LOWER_CASE: 匹配小写
//		JAVA_UPPER_CASE: 匹配大写
//		NONE: 不匹配所有字符
//		SINGLE_WIDTH: 匹配单字宽字符, 如中文字就是双字宽
//		WHITESPACE: 匹配所有空白字符
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}
	
	@Test
	public void filterTest(){
		String str = "FirstName LastName +1 123 456 789 !@#$%^&*()_+|}{:\"?><";
		// Use a predefined constant (predefine CharMatcher) 
		String abc="";
		abc=CharMatcher.DIGIT.retainFrom(str);
		 
		    System.out.println(abc);
		 
		abc=CharMatcher.JAVA_LETTER.retainFrom(str);
		 
		    System.out.println(abc);
		 
		abc=CharMatcher.JAVA_LETTER_OR_DIGIT.retainFrom(str);
		 
		    System.out.println(abc);
		 
		int count=CharMatcher.ANY.countIn(str);
		 
		   System.out.println(count);
		 
		count=CharMatcher.DIGIT.countIn(str);
		 
		  System.out.println(count);
		  
		//获取所有的大写字母
		System.out.println(CharMatcher.JAVA_UPPER_CASE.retainFrom(str));
		  
		//去掉控制字符(\t,\n,\b...)
		System.out.println(CharMatcher.JAVA_ISO_CONTROL.removeFrom(str));
		
		//把所有的数字用"*"代替
		System.out.println(CharMatcher.JAVA_DIGIT.replaceFrom(str, "*"));

		//获取所有的数字和小写字母
		System.out.println(CharMatcher.JAVA_DIGIT.or(CharMatcher.JAVA_LOWER_CASE).retainFrom(str));
		
	}

}
